home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
The Atari Compendium
/
The Atari Compendium (Toad Computers) (1994).iso
/
files
/
umich
/
telecomm
/
fnordadl
/
fn132src.zoo
/
citutil
/
clog.c
< prev
next >
Wrap
C/C++ Source or Header
|
1991-09-02
|
3KB
|
134 lines
/*
* clog.c -- display information about the Fnordadel userlog.
*
* 90Dec07 AA Hacked a bit for gcc port
* 88Nov16 orc change field order around, clean up option parsing
* 88Jan30 orc -t flag for constructing userlists
* 87Aug16 orc Some hacks for v3.1
* 87Mar28 orc changes for major release.
* 87Mar02 orc -a flag put in to find illegal aides.
* 87Mar01 orc rewritten for the ST.
*/
#include "ctdl.h"
#include "log.h"
#include "config.h"
#include "citlib.h"
char *program = "clog";
int logfl;
int findnorm = YES;
int passwd = NO;
int tabled = NO;
int showall = NO;
int sorttime = NO;
#define MAXUSERS 100
char *users[MAXUSERS];
int usercount = 0, seen = 0, txp = 0;
static void
showlog(int i)
{
register int j;
if (tabled) {
txp = (1 + txp) % 3;
printf(txp ? "%-25.25s" : "%s\n", logBuf.lbname);
}
else if (findnorm || readbit(logBuf,uAIDE)) {
seen++;
printf("%4d%c ",i, readbit(logBuf,uINUSE) ? ':' : '!');
if (showall) {
for (j=0; j < NAMESIZE; j++)
putchar(isprint(logBuf.lbname[j]) ? logBuf.lbname[j] : '?');
}
else
printf("%-20.20s", logBuf.lbname);
if (passwd)
printf(" %-20.20s", logBuf.lbpw);
printf(" %s", makedate(logBuf.lblast, NO));
if readbit(logBuf,uSYSOP)
printf(", Sys");
else if readbit(logBuf,uAIDE)
printf(", Aid");
if readbit(logBuf,uEXPERT)
printf(", Exp");
if readbit(logBuf,uNETPRIVS)
printf(", Net");
if (!readbit(logBuf,uMAILPRIV))
printf(", No-Mail");
if (!readbit(logBuf,uDOORPRIV))
printf(", No-Door");
if readbit(logBuf,uTWIT)
printf(", TWT");
putchar('\n');
}
}
int
main(int argc, char **argv)
{
int i, j, entry;
char *p;
int pos;
PATHBUF fn;
extern char VERSION[];
#if 0
setbuf(stdout, NULL); /* Avoid stdout buffering */
#endif
printf("%s for Fnordadel V%s\n", program, VERSION);
while (argc > 1) {
--argc, ++argv;
p = *argv;
if (*p == '-') {
while (*++p)
switch (toupper(*p)) {
case 'A': findnorm = NO; break;
case 'T': tabled = YES; break;
case 'P': passwd = YES; break;
case 'C': showall = YES; break;
case 'O': sorttime = YES; break;
}
}
else if (usercount < MAXUSERS)
users[usercount++] = p;
}
if (readSysTab(NO)) {
initlogBuf(&logBuf);
ctdlfile(fn, cfg.sysdir, "ctdllog.sys");
if ((logfl = dopen(fn, O_RDONLY)) < 0)
crashout("Can't open %s", fn);
for (i = 0; i < cfg.logsize; i++) {
pos = sorttime ? logTab[i].ltlogSlot : i;
getlog(&logBuf, pos, logfl);
if (showall || readbit(logBuf,uINUSE)) {
entry++;
for (j = 0; j < usercount; j++)
if (labelcmp(logBuf.lbname, users[j]) == 0)
break;
if (usercount == 0 || j < usercount)
showlog(pos);
}
}
if (tabled && txp)
putchar('\n');
else
printf("%d/%d user%s, %d log entries\n", seen, entry,
(entry != 1) ? "s" : "", cfg.logsize);
killlogBuf(&logBuf);
}
if (fromdesk())
hitkey();
}